package remote.mvc.events
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
	
	
	/**
	 * 回调事件
	 * 通过某个事件成功获取数据后，会使用此事件为载体发送的数据
	 * @createDate 2011-2-28
	 * @author 徐俊杰
	 */
	public class CallBackEvent extends Event
	{
		/**
		 * 创建回调事件类型 
		 * @param oriType 原始类型
		 * @return 回调事件类型
		 * 
		 */		
		public static function createCallBackEventType(oriType:String):String
		{
			return "CALL_BACK_" + oriType + "@#$"; 
			
		}
		
		
		//##################			类主体				####################//
		/**
		 * 源事件 
		 */	
		public var oriEvent:Event;
		
		/**
		 * 数据
		 */
		public var data:Object;
		
		
		/**
		 * 实例化回调事件 
		 * @param oriEvent 源事件
		 * @param data 数据
		 * @param bubbles 指示事件是否为冒泡事件
		 * @param cancelable 指示是否可以阻止与事件相关联的行为
		 * 
		 */		
		public function CallBackEvent(oriEvent:Event, data:Object, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			super(createCallBackEventType(oriEvent.type), bubbles, cancelable);
			this.oriEvent = oriEvent;
			this.data = data;
		}
			
		override public function clone():Event
		{
			return new CallBackEvent(oriEvent, data, bubbles, cancelable);
		}
	}
}